package com.dylon.sort;

import java.util.Arrays;

/**
 * 选择排序
 */
public class SelectionSort {

    public static void main(String[] args) {
        int[] a = new int[]{2,5,3,1,4};
        System.out.println(Arrays.toString(a));
        sort(a);
        System.out.println(Arrays.toString(a));
    }


    public static void sort(int[] a) {
        for (int i = 0; i < a.length - 1; i++) {
            int min = i; // 最小位置
            for (int j = i + 1; j < a.length; j++) {
                if (a[j] < a[min]) {
                    min = j; // 更换最小位置
                }
            }
            if (min != i) {
                swap(a, i, min); // 与第i个位置进行交换
            }
        }
    }
    private static void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

    /*
    选择排序：首先在未排序序列中找到最小（大）元素，存放到排序序列的起始位置，
        然后，再从剩余未排序元素中继续寻找最小（大）元素，然后放到 「已排序序列的末尾」。
            以此类推，直到所有元素均排序完毕。

    [2, 5, 3, 1, 4]  i=0  min=3 , a[min]=1 → a[0]=a[min]
    [1, 5, 3, 2, 4]  i=1  min=3 , a[min]=2 → a[1]=a[min]
    [1, 2, 3, 5, 4]  i=2  min=2 , a[min]=3 → a[2]=a[min]
    [1, 2, 3, 5, 4]  i=3  min=4 , a[min]=4 → a[3]=a[min]
    [1, 2, 3, 4, 5]  i=4  min=4 ,
    [1, 2, 3, 4, 5]

     */

}
